技巧103 使用cAdvisor监控容器

一旦在生产环境中有一系列的容器运行,那么用户可能会想要像多个进程运行在宿主机上一样监控它们的资源利用和性能。

监控领域中(包括总体上来讲,以及考虑Docker)有众多候选的热门地带。之所以选择cAdvisor是因为它受众很广。它是一个由谷歌公司开源的快速流行起来的项目。如果之前用过传统的宿主机监控工具,如Zabbix或Sysdig,那么值得看一下它们是否已经提供了所需的功能——编写本书时很多工具都在添加面向容器的功能。

问题

想要监控容器的性能。

解决方案

使用cAdvisor作为监控工具。

cAdvisor 是一个由谷歌公司开发的用来监控容器的工具。它在GitHub上开源。

cAdvisor作为一个收集运行中的容器的性能数据的守护进程运行。除此之外,它会监测:

  • 资源隔离参数;
  • 历史资源使用;
  • 网络统计数据。

cAdvisor可以在宿主机上原生安装或者作为Docker容器运行,如代码清单15-3所示。

代码清单15-3 运行cAdvisor

$ docker run \  ⇽--- 给予cAdvisor对root文件系统的只读权限,以便它检测宿主机的信息
 --volume /:/rootfs:ro \  ⇽--- 以读写权限挂载/var/run文件夹。大多数情况下,每台宿主机上应当运行一个cAdvisor实例
 --volume /var/run:/var/run:rw \
 --volume /sys:/sys:ro \  ⇽--- 给予cAdvisor对宿主机的/sys文件夹的只读权限,其中包含内核子系统和附加到宿主机的设备的信息
 --volume /var/lib/docker/:/var/lib/docker:ro \  ⇽--- 给予cAdvisor对Docker宿主机目录的只读权限
 -p 8080:8080 -d --name cadvisor \  ⇽---  cAdvisor的网络接口在端口8080提供服务,我们在宿主机上也在同一端口发布。用来在后台运行容器并给容器取名的标准的Docker参数也会被使用
 --restart on-failure:10 google/cadvisor  ⇽--- 在失败时重启容器最多十次。这个镜像是用Google的账户存储在Docker Hub上的

一旦启动了镜像,就可以通过浏览器访问http://localhost:8080以检查数据输出。这里有一些宿主机的信息,但是点击主页顶部的Docker Containers链接,可以检查CPU、内存和其他历史数据。只要点击“Subcontainers”标题下列出的正在运行的容器即可。

容器运行时数据被收集并在内存中保存。在GitHub页面上有一个在InfluxDB里保存数据的文档。那个GitHub仓库里还有REST API的细节以及一个用Go语言编写的样例客户端程序。

提示

InfluxDB是一个设计用来处理时间序列数据的轨迹的开源数据库。因此它对记录和分析实时提供的监控信息来说很理想。

讨论

监控是一个迅速发展而且相当分裂的社区,cAdvisor只是众多选择中的一个。例如,Prometheus这个正在迅速整合的标准,可以接收并存储cAdvisor产生的数据而不是直接把它放入InfluxDB里。

监控也是开发者抱有热情的主题。开发一种能够灵活适应各种变化中的风格的监控策略是很有好处的。

results matching ""

    No results matching ""